class Parent {

    constructor() {
        this.id = "普通爸爸"
    }

    makeMoney() {
        console.log(this.id, "爱挣钱")
    }
}

class Child extends Parent {

    constructor(){
        super(); // 必须调用父类构造器，并且必须在第一行就调用
    }

    wasteMoney() {
        super.makeMoney()
        console.log(this.id,"正在花钱")
    }
}

const child = new Child()

child.wasteMoney()


console.log("继承层次中的 this 可以被 诸如 call()、 apply() 一类的方法改变上下文，但是 super 关键字已经和 继承结构绑定，不会被改变")
const women = {
    id:"别的女人"
}

// class 中的 普通方法都是绑定到了 原型上
// class 中的 static 方法 没有绑定到 原型上
Child.prototype.wasteMoney.call(women)
